package com.dkd.system.utils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class QRCodeDetector {

    /**
     * 调用Python脚本检测Base64图片是否是二维码
     * @param base64Image Base64编码的图片数据（可带data URI前缀）
     * @return true如果是二维码，false如果不是或发生错误
     */
    public static boolean isQRCode(String base64Image) {
        try {
            // Python脚本路径（替换为你的实际路径）
            String pythonScript = "D:\\Dev\\PythonProject\\opencv\\qrcode.py";

            //先激活conda环境，然后执行Python脚本
            ProcessBuilder pb;
            if (System.getProperty("os.name").toLowerCase().contains("win")) {
                // Windows系统
                pb = new ProcessBuilder(
                        "cmd.exe", "/c",
                        "conda activate opencv && python " + pythonScript + " \"" + base64Image + "\""
                );
            } else {
                // Linux/Mac系统
                pb = new ProcessBuilder(
                        "bash", "-c",
                        "source activate opencv && python " + pythonScript + " \"" + base64Image + "\""
                );
            }

            Process process = pb.start();

            // 读取Python脚本的输出（true/false）
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(process.getInputStream())
            );
            String result = reader.readLine(); // 读取第一行输出
            // 等待进程结束
            int exitCode = process.waitFor();
            if (exitCode != 0) {
                System.err.println("Python脚本执行错误，退出码: " + exitCode);
                return false;
            }

            // 解析结果
            return "true".equalsIgnoreCase(result);

        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
            return false;
        }
    }

    // 测试用例
    public static void main(String[] args) {
//       String base64Image ="";
        String base64Image ="";
       boolean isQR = isQRCode(base64Image);
        System.out.println("是否是二维码: " + isQR);
    }
}